package com.cms.recursoshumanos.activity.menu_comida;

import java.util.Calendar;
import java.util.Date;
import java.util.List;

import com.example.frontendrecursoshumanos.R;
import com.cms.recursoshumanos.activity.main.MainRecursosHumanosActivity;
import com.cms.recursoshumanos.cache.ListaTipoMenuCache;
import com.cms.recursoshumanos.cache.MenuComidaCache;
import com.cms.recursoshumanos.cache.UserInfoCache;
import com.cms.recursoshumanos.constant.Constant;
import com.cms.recursoshumanos.handler.ListaComidaMenuActivityHandler;
import com.cms.recursoshumanos.object.TipoMenu;
import com.cms.recursoshumanos.object.Usuario;
import com.cms.recursoshumanos.object.list.ListaTipoMenu;
import com.cms.recursoshumanos.utilities.Tool;

import android.os.AsyncTask;
import android.os.Bundle;
import android.app.DatePickerDialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.DatePicker;
import android.widget.ListView;
import android.widget.TextView;

public class ListaTipoMenuActivity extends MainRecursosHumanosActivity 
{
	private static TipoMenuAdapter adaptador;
	private static ListView listViewTipoMenu;
	
	protected static ListaMenuAsync asyncListaMenuTask;
	
	private ProgressDialog dialog;
	
	private static Usuario elUsuario;
	private static ListaTipoMenu listado;
	@Override
	protected void onCreate(Bundle savedInstanceState) 
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_lista_tipo_menu);
		elUsuario = UserInfoCache.getInstance().getUsuario();
		listado =  ListaTipoMenuCache.getInstance().getListaTipoMenu();
		setCompenents();
	}
	
	@Override
	protected void onResume() 
	{
		super.onResume();
		if (elUsuario == null)
		{
			elUsuario = UserInfoCache.getInstance().getUsuario();
		}
		if (listado == null)
		{
			goPaginaPrincipal(ListaTipoMenuActivity.this);
		}
	}
	


	public void setCompenents()
	{
		listViewTipoMenu =  (ListView)  findViewById ( R.id.lvTipoMenu );
		adaptador = new TipoMenuAdapter(this,listado.getListaTipoMenu());
		listViewTipoMenu.setAdapter(adaptador);
	}

	public void getListaMenu(TipoMenu elTipoMenu, Date fecha_seleccionada)
	{
	
		asyncListaMenuTask = new ListaMenuAsync(elUsuario,
													fecha_seleccionada,
													elTipoMenu);
		asyncListaMenuTask.execute();
		
	}
	
	public void goListaMenu()
	{
		Intent intent = new Intent(ListaTipoMenuActivity.this, ListaComidaMenuActivity.class);
		startActivity(intent);

	}
	
	public class TipoMenuAdapter extends ArrayAdapter<TipoMenu> 
	{
	    LayoutInflater mInflater ;  
	    private List<TipoMenu> mItems ;
	    private ViewHolder holder;
	 
	    public TipoMenuAdapter  ( Context context , List<TipoMenu> items)  
	    {
	        super ( context, -1, items )  ;
	        this.mItems = items ;
	        this.mInflater = LayoutInflater.from(context) ;
	    }
	    
	    @ Override
	    public View getView ( final int position, View convertView, ViewGroup parent )  
	    {
	            // Inflate the custom view
    		if (convertView == null)
    		{
    			convertView =   mInflater.inflate( R.layout.elementos_lista_tipo_objeto_item,null);    		
        		convertView.setOnClickListener(new OnClickListener() 
        		{
    				
    				@Override
    				public void onClick(View v) 
    				{
    					final Calendar myCalendar = Calendar.getInstance();
    					
    					DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener()
    					{

    						public void onDateSet(DatePicker view, int year, int monthOfYear,
    					            int dayOfMonth) 
    						{
    					        // TODO Auto-generated method stub
    					        myCalendar.set(Calendar.YEAR, year);
    					        myCalendar.set(Calendar.MONTH, monthOfYear);
    					        myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
    					        
    					        getListaMenu(mItems.get(position), myCalendar.getTime());
    					    }

    					};
    					
    					DatePickerDialog datepicker = new DatePickerDialog(ListaTipoMenuActivity.this, 
    																date, 
    																myCalendar.get(Calendar.YEAR), 
    																myCalendar.get(Calendar.MONTH),
    																myCalendar.get(Calendar.DAY_OF_MONTH));
    					
    					
    					datepicker.getDatePicker().setMinDate(myCalendar.getTimeInMillis());
    					
    					datepicker.setButton(DatePickerDialog.BUTTON_POSITIVE, "Seleccionar", datepicker);
    					datepicker.show();
    					
    					
    				}
    			});
        		
        		holder = new ViewHolder();
        		holder.nombreTipoMenu = (TextView) convertView.findViewById(R.id.tvNombreTipoObject);
        		
        		convertView.setTag(holder);
        		
    		}
	    	else
	    	{
	    		holder = (ViewHolder)convertView.getTag();
	    	}
	    	
    		holder.nombreTipoMenu.setText(mItems.get(position).getNombreTipoMenu());
    		
	        return convertView ;
	    }
	    private class ViewHolder 
	    {    	  
        	  TextView  nombreTipoMenu;
        }
	}
	
	
	private class ListaMenuAsync extends AsyncTask<String, Void, String>
	{
		private TipoMenu tipo_menu;
		private Date fecha_seleccionada;
		
		private Usuario elUsuario;

		public  ListaMenuAsync(Usuario elUsuario, Date fecha_seleccionado, TipoMenu tipo_menu)
	    {
			this.elUsuario = elUsuario;
			this.fecha_seleccionada = fecha_seleccionado;
			this.tipo_menu = tipo_menu;
	    }
		
		@SuppressWarnings("deprecation")
		@Override
		protected void onPreExecute()
		{
			showDialog(0);
			dialog = ProgressDialog.show(ListaTipoMenuActivity.this, "Espere","Cargando...",true );
		}
	
		@Override
		protected String doInBackground(String... arg0) 
		{
			
			ListaComidaMenuActivityHandler handler = new ListaComidaMenuActivityHandler();
			String result = handler.getListaComidaMenu(this.elUsuario.getNombre_Usuario(), 
														this.elUsuario.getPassword(),
														fecha_seleccionada,
														tipo_menu);
			return result;
			//return ConexionHandler.makeLogin(LoginActivity.this,arg0[0], arg0[1]);
		}
		
		@Override
		public void onPostExecute(String result)
		{
			
			String str_result = result;
			
			if (str_result.equals(Constant.CODE_OK))
			{ 
				MenuComidaCache.getInstance().getMenuComida().setFechaMenu(fecha_seleccionada);
				goListaMenu();
			}
			else 
			{
				Tool.getInstance().showMessage( str_result);
			}
			dialog.cancel();
			this.cancel(true);
			
			
		}
		
	}
}
